
(function(window, $) {


    function pttab(_filter){

        var filter = _filter;
        var panel = '.iframes';


        //计算元素集合的总宽度
        function calSumWidth(elements) {
            var width = 0;
            $(elements).each(function () {
                width += $(this).outerWidth(true);
            });
            return width;
        }
        //滚动到指定选项卡
        function scrollToTab(element) {
            var marginLeftVal = calSumWidth($(element).prevAll()), marginRightVal = calSumWidth($(element).nextAll());
            // 可视区域非tab宽度
            var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".J_menuTabs"));
            //可视区域tab宽度
            var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
            //实际滚动宽度
            var scrollVal = 0;
            if ($(".page-tabs-content").outerWidth() < visibleWidth) {
                scrollVal = 0;
            } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
                if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
                    scrollVal = marginLeftVal;
                    var tabElement = element;
                    while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {
                        scrollVal -= $(tabElement).prev().outerWidth();
                        tabElement = $(tabElement).prev();
                    }
                }
            } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
                scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
            }
            $('.page-tabs-content').animate({
                marginLeft: 0 - scrollVal + 'px'
            }, "fast");
        }

        function exists(id) {

            var el = $(filter).find(".page-tabs-content").find("[data-id='"+id+"']");
            return el;
            if(el.length > 0){
                return el;
            }
            return el.length > 0;

            //page-tabs-content



            console.log(12454);

        }
        
        function add(id,title,url) {


            $(panel).find("iframe").css("display","none");
            $(filter).find(".page-tabs-content>a").removeClass("active");

            var el = exists(id);

            if(el.length > 0){

                $(panel).find("#c"+id).css("display","block");

                el.addClass("active");
                scrollToTab(el);

                console.log('exists');
                return;
            }


            var html = '<a href="javascript:;" class="active J_menuTab" data-id="'+id+'">'+title+' <i class="fa fa-times-circle"></i></a>';


            $(filter).find(".page-tabs-content").append(html);


            $(panel).find("iframe").css("display","none");

            //<iframe id="if100"></iframe>

            $(panel).append("<iframe src='"+url+"' id='c"+id+"'></iframe>");

            console.log('add');
            console.log(filter);
            
        }
        
        function closeAll() {
            $(filter).empty();

        }

        function test() {
            console.log('tabs v1.0');
        }
        
        function getActive() {
            var ele = $(filter).find(".active");
            if(ele.length > 0){
                var id = ele.data("id");
                return id;
            } else {
                return 0;
            }
        }

        //刷新当前tab
        function refreshTab() {
            var id = getActive();
            if(id){
                $("#c" + id)[0].contentWindow.location.reload(true);
            }
        }

        // 关闭选项卡菜单
        function closeTab(closeTabId) {

            //获取到元素
            var ele = $(_filter).find(".J_menuTab[data-id='" + closeTabId + "']");

            // 当前元素处于活动状态
            if (ele.hasClass('active')) {

                // 当前元素后面有同辈元素，使后面的一个元素处于活动状态
                if (ele.next('.J_menuTab').length) {

                    //选中下一个
                    ele.next('.J_menuTab').addClass("active");
                    var nextid = ele.next('.J_menuTab').data("id");

                    $(panel).find("iframe").css("display","none");
                    $(panel).find("#c"+nextid).css("display","block");

                    //  移除当前选项卡
                    ele.remove();
                    $(panel).find("#c"+closeTabId).remove();
                }

                // 当前元素后面没有同辈元素，使当前元素的上一个元素处于活动状态
                if (ele.prev('.J_menuTab').length) {

                    //选中下一个
                    ele.prev('.J_menuTab').addClass("active");
                    var nextid = ele.prev('.J_menuTab').data("id");

                    $(panel).find("iframe").css("display","none");
                    $(panel).find("#c"+nextid).css("display","block");

                    //  移除当前选项卡
                    ele.remove();
                    $(panel).find("#c"+closeTabId).remove();
                }
            }
            // 当前元素不处于活动状态
            else {

                //  移除当前选项卡
                ele.remove();
                $(panel).find("#c"+closeTabId).remove();

            }
            return false;
        }

        // 点击选项卡菜单
        function activeTab() {

            if ($(this).hasClass('active')) {
                return;
            }

            var id = $(this).data('id');

            $(filter).find(".page-tabs-content>a").removeClass("active");

            $(this).addClass('active');

            $(panel).find("iframe").css("display","none");
            $(panel).find("#c"+id).css("display","block");


            // if (!$(this).hasClass('active')) {
            //     var currentId = $(this).data('id');
            //     // 显示tab对应的内容区
            //     $('.J_mainContent .J_iframe').each(function () {
            //         if ($(this).data('id') == currentId) {
            //             $(this).show().siblings('.J_iframe').hide();
            //             return false;
            //         }
            //     });
            //     $(this).addClass('active').siblings('.J_menuTab').removeClass('active');
            //
            //
            //     //菜单显示控制
            //     $(".J_menuItem").removeClass("sel");
            //     var that = $(".J_menuItem[href='"+currentId+"']");
            //     if(that.length > 0){
            //         that.addClass("sel");
            //         var p = that.parent().parent().parent();
            //         var ac = p.hasClass("active");
            //         if(!ac){
            //             p.children(":first").trigger("click");
            //         }
            //     }
            //
            //     scrollToTab(this);
            //
            // }
            // //add by ponley 激活tab时自动调用 bind 方法
            // var target = $('.J_iframe[data-id="' + $(this).data('id') + '"]');
            // var ifrmae = target[0];
            // if (typeof (ifrmae.contentWindow.bind) == "function") {
            //     ifrmae.contentWindow.bind();
            // }
        }


        //查看左侧隐藏的选项卡
        function scrollTabLeft() {
            var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
            // 可视区域非tab宽度
            var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".J_menuTabs"));
            //可视区域tab宽度
            var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
            //实际滚动宽度
            var scrollVal = 0;
            if ($(".page-tabs-content").width() < visibleWidth) {
                return false;
            } else {
                var tabElement = $(".J_menuTab:first");
                var offsetVal = 0;
                while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素
                    offsetVal += $(tabElement).outerWidth(true);
                    tabElement = $(tabElement).next();
                }
                offsetVal = 0;
                if (calSumWidth($(tabElement).prevAll()) > visibleWidth) {
                    while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
                        offsetVal += $(tabElement).outerWidth(true);
                        tabElement = $(tabElement).prev();
                    }
                    scrollVal = calSumWidth($(tabElement).prevAll());
                }
            }
            $('.page-tabs-content').animate({
                marginLeft: 0 - scrollVal + 'px'
            }, "fast");
        }

        //查看右侧隐藏的选项卡
        function scrollTabRight() {
            var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
            // 可视区域非tab宽度
            var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".J_menuTabs"));
            //可视区域tab宽度
            var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
            //实际滚动宽度
            var scrollVal = 0;
            if ($(".page-tabs-content").width() < visibleWidth) {
                return false;
            } else {
                var tabElement = $(".J_menuTab:first");
                var offsetVal = 0;
                while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素
                    offsetVal += $(tabElement).outerWidth(true);
                    tabElement = $(tabElement).next();
                }
                offsetVal = 0;
                while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
                    offsetVal += $(tabElement).outerWidth(true);
                    tabElement = $(tabElement).next();
                }
                scrollVal = calSumWidth($(tabElement).prevAll());
                if (scrollVal > 0) {
                    $('.page-tabs-content').animate({
                        marginLeft: 0 - scrollVal + 'px'
                    }, "fast");
                }
            }
        }

        $(filter).on("click",".J_menuTab",activeTab);

        $('.J_menuTabs').on('click', '.J_menuTab i', function () {
            var closeTabId = $(this).parents('.J_menuTab').data('id');
            return closeTab(closeTabId);
        });

        // 左移按扭
        $('.J_tabLeft').on('click', scrollTabLeft);

        // 右移按扭
        $('.J_tabRight').on('click', scrollTabRight);


        // 关闭全部
        $('.J_tabCloseAll').on('click', function () {
            $('.page-tabs-content').children("[data-id]").not(":first").each(function () {
                $('.J_iframe[data-id="' + $(this).data('id') + '"]').remove();
                $(this).remove();
            });
            $('.page-tabs-content').children("[data-id]:first").each(function () {
                $('.J_iframe[data-id="' + $(this).data('id') + '"]').show();
                $(this).addClass("active");
            });
            $('.page-tabs-content').css("margin-left", "0");
        });


        //关闭其他选项卡
        function closeOtherTabs(){
            $('.page-tabs-content').children("[data-id]").not(":first").not(".active").each(function () {
                $('.J_iframe[data-id="' + $(this).data('id') + '"]').remove();
                $(this).remove();
            });
            $('.page-tabs-content').css("margin-left", "0");
        }
        $('.J_tabCloseOther').on('click', closeOtherTabs);


        //滚动到已激活的选项卡
        function showActiveTab(){
            scrollToTab($('.J_menuTab.active'));
        }
        $('.J_tabShowActive').on('click', showActiveTab);

        return {
            test:test,
            add:add,
            closeAll:closeAll,
            getActive:getActive,
            refreshTab:refreshTab,
            closeTab:closeTab,
        };
    }


    window.pttab = pttab;

    console.log(654);


})(window, jQuery);


